library(tidyverse)
[30m── [1mAttaching packages[22m ─────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──[39m
[30m[32m✔[30m [34mggplot2[30m 3.0.0 [32m✔[30m [34mpurrr [30m 0.2.5
[32m✔[30m [34mtibble [30m 1.4.2 [32m✔[30m [34mdplyr [30m 0.7.6
[32m✔[30m [34mtidyr [30m 0.8.1 [32m✔[30m [34mstringr[30m 1.3.1
[32m✔[30m [34mreadr [30m 1.1.1 [32m✔[30m [34mforcats[30m 0.3.0[39m
[30m── [1mConflicts[22m ────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
[31m✖[30m [34mdplyr[30m::[32mfilter()[30m masks [34mstats[30m::filter()
[31m✖[30m [34mdplyr[30m::[32mlag()[30m masks [34mstats[30m::lag()[39m
Beyond the x and y aesthetics
Switch focus to exploring aesthetic mappings, instead of geoms.
Shapes
- Try a scatterplot of
gdpPercap vs pop with a categorical variable (continent) as shape.

- As with all (?) aesthetics, we can also have them not as aesthetics!
- Try some shapes: first as integer from 0-24, then as keyboard characters.
- What’s up with
pch?

List of shapes can be found at the bottom of the scale_shape documentation.
Colour
Make a scatterplot. Then:
- Try colour as categorical variable.
- Try
colour and color.
- Try colour as numeric variable.
- Try
trans="log10" for log scale.



Make a line plot of gdpPercap over time for all countries. Colour by lifeExp > 60 (remember that lifeExp looks bimodal?)

Try adding colour to a histogram. How is this different?

Facetting
Make histograms of gdpPercap for each continent. Try the scales and ncol arguments.

Remove Oceania. Add another variable: lifeExp > 60.

Bubble Plots
- Add a
size aesthetic to a scatterplot. What about cex?
- Try adding
scale_radius() and scale_size_area(). What’s better?
- Use
shape=21 to distinguish between fill (interior) and colour (exterior).


“Complete” plot
Let’s try plotting much of the data.
- gdpPercap vs lifeExp with pop bubbles
- facet by year
- colour by continent

Continue from last time (geom exploration with x and y aesthetics)
Path plots
Let’s see how Rwanda’s life expectancy and GDP per capita have evolved over time, using a path plot.
- Try
geom_line(). Try geom_point().
- Add
arrow=arrow() option.
- Add
geom_text, with year label.

Two categorical variables
Try cyl (number of cylinders) ~ am (transmission) in the mtcars data frame.
- Scatterplot? Jitterplot? No.
geom_count().
geom_bin2d(). Compare with geom_tile() with fill aes.

Overplotting
Try a scatterplot with:
- Alpha transparency.
geom_hex()
geom_density2d()
geom_smooth()

Bar plots
How many countries are in each continent? Use the year 2007.
- After filtering the gapminder data to 2007, make a bar chart of the number of countries in each continent. Store everything except the geom in the variable
d.

- Notice the y-axis. Oddly,
ggplot2 doesn’t make it obvious how to change to proportion. Try adding a y aesthetic: y=..count../sum(..count..).
Uses of bar plots: Get a sense of relative quantities of categories, or see the probability mass function of a categorical random variable.
Polar coordinates
- Add
coord_polar() to a scatterplot.
Want more practice?
If you’d like some practice, give these exercises a try
Exercise 1: Make a plot of year (x) vs lifeExp (y), with points coloured by continent. Then, to that same plot, fit a straight regression line to each continent, without the error bars. If you can, try piping the data frame into the ggplot function.
Exercise 2: Repeat Exercise 1, but switch the regression line and geom_point layers. How is this plot different from that of Exercise 1?
Exercise 3: Omit the geom_point layer from either of the above two plots (it doesn’t matter which). Does the line still show up, even though the data aren’t shown? Why or why not?
Exercise 4: Make a plot of year (x) vs lifeExp (y), facetted by continent. Then, fit a smoother through the data for each continent, without the error bars. Choose a span that you feel is appropriate.
Exercise 5: Plot the population over time (year) using lines, so that each country has its own line. Colour by gdpPercap. Add alpha transparency to your liking.
Exercise 6: Add points to the plot in Exercise 5.
LS0tCnRpdGxlOiAiY20wMDcgRXhlcmNpc2VzOiBFeHBsb3JpbmcgQWVzdGhldGljIE1hcHBpbmdzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKZWRpdG9yX29wdGlvbnM6IAogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUKLS0tCmBgYHtyfQpsaWJyYXJ5KGdhcG1pbmRlcikKbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKCgojIEJleW9uZCB0aGUgeCBhbmQgeSBhZXN0aGV0aWNzCgpTd2l0Y2ggZm9jdXMgdG8gZXhwbG9yaW5nIGFlc3RoZXRpYyBtYXBwaW5ncywgaW5zdGVhZCBvZiBnZW9tcy4gCgojIyBTaGFwZXMKCi0gVHJ5IGEgc2NhdHRlcnBsb3Qgb2YgYGdkcFBlcmNhcGAgdnMgYHBvcGAgd2l0aCBhIGNhdGVnb3JpY2FsIHZhcmlhYmxlIChjb250aW5lbnQpIGFzIGBzaGFwZWAuCgpgYGB7cn0KZ3ZzbCA8LSBnZ3Bsb3QoZ2FwbWluZGVyLCBhZXMoZ2RwUGVyY2FwLCBsaWZlRXhwKSkrCiAgc2NhbGVfeF9sb2cxMCgpCgpndnNsK2dlb21fcG9pbnQoYWVzKHNoYXBlID0gY29udGluZW50ICksIGFscGhhID0gMC4yKQpgYGAKCgoKCgotIEFzIHdpdGggYWxsICg/KSBhZXN0aGV0aWNzLCB3ZSBjYW4gYWxzbyBoYXZlIHRoZW0gX25vdF8gYXMgYWVzdGhldGljcyEKICAgIC0gVHJ5IHNvbWUgc2hhcGVzOiBmaXJzdCBhcyBpbnRlZ2VyIGZyb20gMC0yNCwgdGhlbiBhcyBrZXlib2FyZCBjaGFyYWN0ZXJzLgogICAgLSBXaGF0J3MgdXAgd2l0aCBgcGNoYD8KCmBgYHtyfQpndnNsK2dlb21fcG9pbnQoc2hhcGUgPSAyNCkKZ3ZzbCtnZW9tX3BvaW50KHBjaCA9IDI0KQoKZ3ZzbCtnZW9tX3BvaW50KHNoYXBlID0gIkAiKSAgIyBjYW4gdXNlIGtleWJvYXJkIHNpZ24gYXMgYSBzaGFwZSBpbnB1dApgYGAKCgpMaXN0IG9mIHNoYXBlcyBjYW4gYmUgZm91bmQgW2F0IHRoZSBib3R0b20gb2YgdGhlIGBzY2FsZV9zaGFwZWAgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9nZ3Bsb3QyLnRpZHl2ZXJzZS5vcmcvcmVmZXJlbmNlL3NjYWxlX3NoYXBlLmh0bWwpLgoKIyMgQ29sb3VyCgpNYWtlIGEgc2NhdHRlcnBsb3QuIFRoZW46CgotIFRyeSBjb2xvdXIgYXMgY2F0ZWdvcmljYWwgdmFyaWFibGUuCi0gVHJ5IGBjb2xvdXJgIGFuZCBgY29sb3JgLiAKLSBUcnkgY29sb3VyIGFzIG51bWVyaWMgdmFyaWFibGUuCiAgICAtIFRyeSBgdHJhbnM9ImxvZzEwImAgZm9yIGxvZyBzY2FsZS4KYGBge3J9Cmd2c2wrZ2VvbV9wb2ludChhZXMoY29sb3VyID0gY29udGluZW50KSkKYGBgCmBgYHtyfQpndnNsICsgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBwb3ApKQpgYGAKYGBge3J9Cmd2c2wrZ2VvbV9wb2ludChhZXMoY29sb3VyID0gcG9wKSkrc2NhbGVfY29sb3JfY29udGludW91cyh0cmFucyAgPSJsb2cxMCIpCmBgYAoKCk1ha2UgYSBsaW5lIHBsb3Qgb2YgYGdkcFBlcmNhcGAgb3ZlciB0aW1lIGZvciBhbGwgY291bnRyaWVzLiBDb2xvdXIgYnkgYGxpZmVFeHAgPiA2MGAgKHJlbWVtYmVyIHRoYXQgYGxpZmVFeHBgIGxvb2tzIGJpbW9kYWw/KQpgYGB7cn0KZ3ZzbCtnZW9tX3BvaW50KGFlcyhjb2xvdXIgPSBsaWZlRXhwPjYwKSkKCmBgYAoKClRyeSBhZGRpbmcgY29sb3VyIHRvIGEgaGlzdG9ncmFtLiBIb3cgaXMgdGhpcyBkaWZmZXJlbnQ/CmBgYHtyfQpnZ3Bsb3QoZ2FwbWluZGVyLGFlcyhsaWZlRXhwKSkrZ2VvbV9oaXN0b2dyYW0oYWVzKGZpbGwgPSBjb250aW5lbnQpKSAKYGBgCgoKIyMgRmFjZXR0aW5nCgpNYWtlIGhpc3RvZ3JhbXMgb2YgYGdkcFBlcmNhcGAgZm9yIGVhY2ggY29udGluZW50LiBUcnkgdGhlIGBzY2FsZXNgIGFuZCBgbmNvbGAgYXJndW1lbnRzLiAKYGBge3J9CmdncGxvdChnYXBtaW5kZXIsIGFlcyhsaWZlRXhwKSkrCiAgZmFjZXRfd3JhcCggfiBjb250aW5lbnQsIHNjYWxlcyA9ICJmcmVlX3giKStnZW9tX2hpc3RvZ3JhbSgpCmBgYAoKUmVtb3ZlIE9jZWFuaWEuIEFkZCBhbm90aGVyIHZhcmlhYmxlOiBgbGlmZUV4cCA+IDYwYC4gCmBgYHtyfQoKZ2dwbG90KGdhcG1pbmRlciwgYWVzKGdkcFBlcmNhcCkpKwogIGZhY2V0X2dyaWQoY29udGluZW50IH4gbGlmZUV4cCA+IDYwKSArCiAgZ2VvbV9oaXN0b2dyYW0oKQpgYGAKCgojIyBCdWJibGUgUGxvdHMKCi0gQWRkIGEgYHNpemVgIGFlc3RoZXRpYyB0byBhIHNjYXR0ZXJwbG90LiBXaGF0IGFib3V0IGBjZXhgPwotIFRyeSBhZGRpbmcgYHNjYWxlX3JhZGl1cygpYCBhbmQgYHNjYWxlX3NpemVfYXJlYSgpYC4gV2hhdCdzIGJldHRlcj8KLSBVc2UgYHNoYXBlPTIxYCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGBmaWxsYCAoaW50ZXJpb3IpIGFuZCBgY29sb3VyYCAoZXh0ZXJpb3IpLgpgYGB7cn0KZ3ZzbCtnZW9tX3BvaW50KGFlcyhzaXplID0gcG9wKSwgYWxwaGEgPTAuMikrCiAgc2NhbGVfc2l6ZV9hcmVhKCkKCmBgYApgYGB7cn0KZ3ZzbCtnZW9tX3BvaW50KGFlcyhzaXplID0gcG9wLCBmaWxsPSBjb250aW5lbnQpLCBzaGFwZSA9IDIxLCBjb2xvdXI9ICJibGFjayIpCmBgYAoKCiMjICJDb21wbGV0ZSIgcGxvdAoKTGV0J3MgdHJ5IHBsb3R0aW5nIG11Y2ggb2YgdGhlIGRhdGEuCgotIGdkcFBlcmNhcCB2cyBsaWZlRXhwIHdpdGggcG9wIGJ1YmJsZXMKLSBmYWNldCBieSB5ZWFyCi0gY29sb3VyIGJ5IGNvbnRpbmVudAoKYGBge3J9Cmd2c2wrZ2VvbV9wb2ludChhZXMoc2l6ZSA9IHBvcCwgY29sb3VyID0gY29udGluZW50KSkrCiAgc2NhbGVfc2l6ZV9hcmVhKCkrCiAgZmFjZXRfd3JhcCh+eWVhcikKYGBgCgoKIyBDb250aW51ZSBmcm9tIGxhc3QgdGltZSAoZ2VvbSBleHBsb3JhdGlvbiB3aXRoIGB4YCBhbmQgYHlgIGFlc3RoZXRpY3MpCgojIyBQYXRoIHBsb3RzCgpMZXQncyBzZWUgaG93IFJ3YW5kYSdzIGxpZmUgZXhwZWN0YW5jeSBhbmQgR0RQIHBlciBjYXBpdGEgaGF2ZSBldm9sdmVkIG92ZXIgdGltZSwgdXNpbmcgYSBwYXRoIHBsb3QuCgotIFRyeSBgZ2VvbV9saW5lKClgLiBUcnkgYGdlb21fcG9pbnQoKWAuCi0gQWRkIGBhcnJvdz1hcnJvdygpYCBvcHRpb24uCi0gQWRkIGBnZW9tX3RleHRgLCB3aXRoIHllYXIgbGFiZWwuIAoKYGBge3J9CmdhcG1pbmRlciU+JQogIGZpbHRlcihjb3VudHJ5ID09IlJ3YW5kYSIpJT4lCiAgZ2dwbG90KGFlcyhnZHBQZXJjYXAsbGlmZUV4cCkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3BhdGgoYXJyb3cgPSBhcnJvdygpKQpgYGAKCiMjIFR3byBjYXRlZ29yaWNhbCB2YXJpYWJsZXMKClRyeSBgY3lsYCAobnVtYmVyIG9mIGN5bGluZGVycykgfiBgYW1gICh0cmFuc21pc3Npb24pIGluIHRoZSBgbXRjYXJzYCBkYXRhIGZyYW1lLgoKLSBTY2F0dGVycGxvdD8gSml0dGVycGxvdD8gTm8uCi0gYGdlb21fY291bnQoKWAuCi0gYGdlb21fYmluMmQoKWAuIENvbXBhcmUgd2l0aCBgZ2VvbV90aWxlKClgIHdpdGggYGZpbGxgIGFlcy4KCmBgYHtyfQpnZ3Bsb3QobXRjYXJzLCBhZXMoY3lsLCBhbSkpKwogIGdlb21fY291bnQoKQoKZ2dwbG90KG10Y2FycywgYWVzKGZhY3RvcihjeWwpLCBmYWN0b3IoYW0pKSkrCiAgZ2VvbV9iaW4yZCgpCmBgYAoKCgoKIyMgT3ZlcnBsb3R0aW5nCgpUcnkgYSBzY2F0dGVycGxvdCB3aXRoOgoKLSBBbHBoYSB0cmFuc3BhcmVuY3kuCi0gYGdlb21faGV4KClgCi0gYGdlb21fZGVuc2l0eTJkKClgCi0gYGdlb21fc21vb3RoKClgCmBgYHtyfQpndnNsICsgZ2VvbV9oZXgoKQoKZ3ZzbCtnZW9tX2RlbnNpdHkyZCgpCgpndnNsK2dlb21fcG9pbnQoYWxwaGEgPSAwLjEpICsgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikKCmd2c2wrZ2VvbV9wb2ludCgpK2Nvb3JkX3BvbGFyKCkKYGBgCgoKIyMgQmFyIHBsb3RzCgpIb3cgbWFueSBjb3VudHJpZXMgYXJlIGluIGVhY2ggY29udGluZW50PyBVc2UgdGhlIHllYXIgMjAwNy4KCjEuIEFmdGVyIGZpbHRlcmluZyB0aGUgZ2FwbWluZGVyIGRhdGEgdG8gMjAwNywgbWFrZSBhIGJhciBjaGFydCBvZiB0aGUgbnVtYmVyIG9mIGNvdW50cmllcyBpbiBlYWNoIGNvbnRpbmVudC4gU3RvcmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIGdlb20gaW4gdGhlIHZhcmlhYmxlIGBkYC4KYGBge3J9CmdhcG1pbmRlciAlPiUKICBmaWx0ZXIoeWVhciA9PTIwMDcpJT4lCiAgZ2dwbG90KGFlcyh4ID0gY29udGluZW50ICkpKwogIGdlb21fYmFyKCkKYGBgCgoKCjIuIE5vdGljZSB0aGUgeS1heGlzLiBPZGRseSwgYGdncGxvdDJgIGRvZXNuJ3QgbWFrZSBpdCBvYnZpb3VzIGhvdyB0byBjaGFuZ2UgdG8gcHJvcG9ydGlvbi4gVHJ5IGFkZGluZyBhIGB5YCBhZXN0aGV0aWM6IGB5PS4uY291bnQuLi9zdW0oLi5jb3VudC4uKWAuCgoKCl9fVXNlcyBvZiBiYXIgcGxvdHNfXzogR2V0IGEgc2Vuc2Ugb2YgcmVsYXRpdmUgcXVhbnRpdGllcyBvZiBjYXRlZ29yaWVzLCBvciBzZWUgdGhlIHByb2JhYmlsaXR5IG1hc3MgZnVuY3Rpb24gb2YgYSBjYXRlZ29yaWNhbCByYW5kb20gdmFyaWFibGUuCgoKCiMjIFBvbGFyIGNvb3JkaW5hdGVzCgotIEFkZCBgY29vcmRfcG9sYXIoKWAgdG8gYSBzY2F0dGVycGxvdC4KCgojIFdhbnQgbW9yZSBwcmFjdGljZT8KCklmIHlvdSdkIGxpa2Ugc29tZSBwcmFjdGljZSwgZ2l2ZSB0aGVzZSBleGVyY2lzZXMgYSB0cnkKCl9fRXhlcmNpc2UgMV9fOiBNYWtlIGEgcGxvdCBvZiBgeWVhcmAgKHgpIHZzIGBsaWZlRXhwYCAoeSksIHdpdGggcG9pbnRzIGNvbG91cmVkIGJ5IGNvbnRpbmVudC4gVGhlbiwgdG8gdGhhdCBzYW1lIHBsb3QsIGZpdCBhIHN0cmFpZ2h0IHJlZ3Jlc3Npb24gbGluZSB0byBlYWNoIGNvbnRpbmVudCwgd2l0aG91dCB0aGUgZXJyb3IgYmFycy4gSWYgeW91IGNhbiwgdHJ5IHBpcGluZyB0aGUgZGF0YSBmcmFtZSBpbnRvIHRoZSBgZ2dwbG90YCBmdW5jdGlvbi4KCl9fRXhlcmNpc2UgMl9fOiBSZXBlYXQgRXhlcmNpc2UgMSwgYnV0IHN3aXRjaCB0aGUgX3JlZ3Jlc3Npb24gbGluZV8gYW5kIF9nZW9tXF9wb2ludF8gbGF5ZXJzLiBIb3cgaXMgdGhpcyBwbG90IGRpZmZlcmVudCBmcm9tIHRoYXQgb2YgRXhlcmNpc2UgMT8KCl9fRXhlcmNpc2UgM19fOiBPbWl0IHRoZSBgZ2VvbV9wb2ludGAgbGF5ZXIgZnJvbSBlaXRoZXIgb2YgdGhlIGFib3ZlIHR3byBwbG90cyAoaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2gpLiBEb2VzIHRoZSBsaW5lIHN0aWxsIHNob3cgdXAsIGV2ZW4gdGhvdWdoIHRoZSBkYXRhIGFyZW4ndCBzaG93bj8gV2h5IG9yIHdoeSBub3Q/CgpfX0V4ZXJjaXNlIDRfXzogTWFrZSBhIHBsb3Qgb2YgYHllYXJgICh4KSB2cyBgbGlmZUV4cGAgKHkpLCBmYWNldHRlZCBieSBjb250aW5lbnQuIFRoZW4sIGZpdCBhIHNtb290aGVyIHRocm91Z2ggdGhlIGRhdGEgZm9yIGVhY2ggY29udGluZW50LCB3aXRob3V0IHRoZSBlcnJvciBiYXJzLiBDaG9vc2UgYSBzcGFuIHRoYXQgeW91IGZlZWwgaXMgYXBwcm9wcmlhdGUuCgpfX0V4ZXJjaXNlIDVfXzogUGxvdCB0aGUgcG9wdWxhdGlvbiBvdmVyIHRpbWUgKHllYXIpIHVzaW5nIGxpbmVzLCBzbyB0aGF0IGVhY2ggY291bnRyeSBoYXMgaXRzIG93biBsaW5lLiBDb2xvdXIgYnkgYGdkcFBlcmNhcGAuIEFkZCBhbHBoYSB0cmFuc3BhcmVuY3kgdG8geW91ciBsaWtpbmcuIAoKX19FeGVyY2lzZSA2X186IEFkZCBwb2ludHMgdG8gdGhlIHBsb3QgaW4gRXhlcmNpc2UgNS4=